#region copyright (C) xia wu,pian jin xiang
/************************************************************************************
' Copyright (C) 2005 xia wu,pian jin xiang 
'
' This software is provided 'as-is', without any express or implied warranty. In no 
' event will the authors be held liable for any damages arising from the use of this 
' software.
' 
' Permission is granted to anyone to use this software for any purpose, including 
' commercial applications, and to alter it and redistribute it freely, subject to the 
' following restrictions:
'
' 1. The origin of this software must not be misrepresented; you must not claim that 
' you wrote the original software. If you use this software in a product, an 
' acknowledgment (see the following) in the product documentation is required.
'
' 2. Altered source versions must be plainly marked as such, and must not be 
' misrepresented as being the original software.
'
' 3. This notice may not be removed or altered from any source distribution.
'
'***********************************************************************************/
#endregion
using System;

namespace org.opencbr.core.context
{
	using org.opencbr.core.Similarity;
	using org.opencbr.core.method;
	using org.opencbr.core.casebase;
	using org.opencbr.core.strategy;
	using org.opencbr.core.express;
	using System.Collections;
	/// <summary>
	/// ICBRContext 
	/// </summary>
	/// <author>xw_cn@163.com</author>
	/// <version>1.0</version>
	/// <creationdate>2005-12-15</creationdate>
	/// <modificationdate></modificationdate>>
	/// <history></history>
	/// 
	public interface ICBRContext
	{
		void SetSimilarity(ISimilarity similarity);
		ISimilarity GetSimilarity();
		
		IMethod GetCaseRetrievalMethod();
		void SetCaseRetrievalMethod(IMethod method);

		IMethod GetCaseReuseMethod();
		void SetCaseReuseMethod(IMethod method);

		IMethod GetCaseReviseMethod();
		void SetCaseReviseMethod(IMethod method);

		IMethod GetCaseRestoreMethod();
		void SetCaseRestoreMethod(IMethod method);

		ICaseReuseStrategy GetCaseReuseStrategy();
		void SetCaseReuseStrategy(ICaseReuseStrategy strategy);

		void SetCaseBaseInputType(int type);
		int GetCaseBaseInputType();

		void SetCaseBaseInput(ICaseBaseInput input);
		ICaseBaseInput GetCaseBaseInput();

		void SetCaseBase(ICaseBase caseBase);
		ICaseBase GetCaseBase();

		void SetCaseBaseURL(string url);
		string GetCaseBaseURL();

		void SetSimilarityThrehold(double similarity);
		double GetSimilarityThrehold();

		void SetCurrentCase(Case problem);
		Case GetCurrentCase();

		void SetMatchedCase(ArrayList cases);
		ArrayList GetMatchedCase();

		void SetSolutionCase(Case solution);
		Case GetSolutionCase();

		void SetReuseCase(Case reuseCase);
		Case GetReuseCase();
	}
}
